Interactive editing of programs makes use of techniques such as “tab completion” which allow the user to type in a fragment of a name, such as a file name or function name and then hit a designated key such as the tab key. If the file name or function name is unique, the interactive editing program extends the partially entered input with the unique completion of the name. Where there are multiple choices, the interactive editing program may provide a menu of choices from which the user may select the proper completion of a name. This sort of auto completion is now seen frequently in non-programming environments as well, such as the auto completion feature of a web browser which fills in a partially entered address.
Unfortunately, the provision of hints in a program development environment becomes increasingly more difficult as the size of the program leads to more possible inputs by the user. The list of possible responses at each stage of input grows as the program evolves. The list needs to be constantly updated as additional functions or options are added to the program, a requirement that quickly becomes tedious and difficult with larger programs. A related problem in the interactive editing field is the difficulty in validating dynamically whether entered input is valid for a completed function call. The same issues present with the auto complete process, i.e. difficulty maintaining and updating a list of valid responses, is present for validation.